home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-01
/
proto212.zip
/
EXEMPLE.ZIP
/
MAKEFILE
< prev
next >
Wrap
Text File
|
1992-01-24
|
4KB
|
94 lines
#Présentation de certaines capacités du make Solucorp
#Solutionne la limitation des lignes de commande DOS
# Cela indique comment créer un fichier de commandes, comment insérer
# des caractères de continuation, et comment appeler l'utilitaire.
# A partir de maintenant cc et lib accepteront des commandes de
# n'importe quelle longueur.
.indir.cc = c:\cc.$$$ @c:\cc.$$$
.indir.lib = c:\lib.$$$,& @c:\cc.$$$
#Résout la limite de 640k sélectivement.
# Cela indique à make qu'il doit libérer le maximum de mémoire
# pour l'exécution de la commande cc make proto.
.huge = cc make proto
#Définition de macros
# La macro SOURCE contiendra la liste de tous les fichiers .c du
# répertoire courant à l'exception du fichier main.c
SOURCE ? *.c -main.c
# Options du compilateur pour tous les fichiers .c
CFLAGS = -O
# Options du compilateur pour certains fichiers .c
# Voir le commentaire dans la règle .c.$(OBJEXT) plus bas
source2.CFLAGS = -n
# La macro DIROBJ contiendra un path. Ce path sera un des trois
# possibles. Le premier qui existe sera choisi.
DIROBJ | c:\obj d:\obj .
#Controle l'accès.
# Cela indique où sont situés et où seront produits les fichiers
# objets (.obj).
.path.obj = $(DIROBJ)
# Cela indique où sont les fichiers d'inclusion. Requis pour
# résoudre les tests de dépendances.
.path.h = . ..\include \compiler\include
#Voici les règles générales pour rebatir une librairie.
# Le préprocesseur est utilisé pour créer un makefile portable.
!if $d(MSDOS)
OBJEXT = obj # Extension des fichiers objets sous MSDOS
LIBEXT = lib # Extension des libraries sous MSDOS
!else
OBJEXT = o # Extension des fichiers objets sous UNIX
LIBEXT = a # Extension des librairies sous UNIX
!endif
#Règle implicite pour la compilation
.c.$(EXTOBJ):
# Généralisition de l'usage des macros: Orienté objet
# $& correspond au nom du module courant
# $($&.CFLAGS) correspond au options applicable au module courant
cc -c $($&.CFLAGS) $(CFLAGS) $&.c
#Règles générales
# lib.? est créé à partir des fichiers objets, et non pas des fichiers .c
# La macro SOURCE contient une liste de .c. Il faut transformer
# cette liste en .obj (.o sous UNIX). Une syntaxe permet de réviser
# temporairement la liste.
# La macro prédéfinie $? permet de mettre à jour la librairie
# avec seul les fichiers .obj (ou .o) plus récent qu'elle.
lib.$(LIBEXT): $(SOURCE:%b.$(OBJEXT))
# Véritable sous-routine, voir !define lib plus bas
!use lib $< "$?"
#Préparation de la documentation.
# Voici la séquence qui a été utilisé pour produire les fichiers
# présentés dans document.exm.
doc:
proto -cod -fxsys.nap *.c # Produit xsys.nap
naperm xsys.nap xsys.nai xsys.nas xsys.nah
nadoc xsys.doc xsys.nap xsys.ref # Produit le manuel de référence
#Création du fichier de dépendance pour les fichiers d'inclusion
# Le fichier makefile.dep est créé en balayant tous les sources
# du répertoire courant. Ce fichier est silencieusement interprété
# par make pour établir les dépendances entre les sources
# et les fichiers d'inclusion.
dep:
makedep makefile *.c
# Sous-routine. Clé de la portabilité des makefiles
!define lib libnom objets
!if $d(MSDOS)
# Un "-+" est ajouté devant chaque .obj
lib $(libnom) $(objets:-+%s)
!else
ar $(libnom) $(objets)#Révise lib.a sous UNIX
ranlib $(libnom)
!endif
!enddef